package cn.gzsf;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class LambdaDemo02 {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Merry");
        list.add("jo");
        list.add("lili");

        System.out.println("排序前:"+list);
        //定义比较器，设置比较规则
        Comparator<String> c = new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        };
        Collections.sort(list,c);
        System.out.println("排序后:"+list);
        /**
         * 方法的参数无需指定，编译器会根据上下文分析出参数类型
         * 若不能确定时，需要指定否则不能通过编译
         */
        Comparator<String> c1 = (o1,o2)->{
            return o1.length()-o2.length();
        };
        /**
         * 方法体中只有一个return语句时，可以省略方法体的{}和return
         */
        Comparator<String> c2 = (o1,o2)-> o1.length()-o2.length();
        //使用lambda表达式完成字符串的排序
        Collections.sort(list,c2);
        System.out.println("lambda表达式，排序："+list);

        Collections.sort(list, (o1,o2)-> o1.length()-o2.length());
        System.out.println("将lambda表达式作为参数，排序："+list);

    }
}
